package edu.cuit.avatar.thread;

import java.util.concurrent.Executors;

/**
 * @author <a href="mailto:1020zhaodan@163.com">Adan</a>
 * @version 1.0
 * @date 2025/7/16 10:10
 */
public class ExecutorDemo {
    public static void main(String[] args) {
        //在线程池中创建可重用的固定数目的线程
        //var executor = Executors.newFixedThreadPool(3);
        //会为每一个等待执行的任务创建一个新的线程,空闲线程在60s内没有被使用就会被线程。对许多小任务而言，一个缓冲池已经足够
        //var executor = Executors.newCachedThreadPool();
        //创建一个只有一个线程的线程池：
        var executor = Executors.newSingleThreadExecutor();
        //向线程池中提交任务
        executor.execute(new PrintNumberTask(100));
        executor.execute(new PrintLetterTask('A',100));
        executor.execute(new PrintLetterTask('B',100));
        //关闭线程池：不再接收新的任务,会等待线程池中所有的任务执行完毕
        executor.shutdown();
    }
}
